home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / tool_inc.zip / QUELIB.INC < prev    next >
Text File  |  1989-06-02  |  1KB  |  86 lines

  1.  
  2. (*
  3.  * Copyright 1987, 1989 Samuel H. Smith;  All rights reserved
  4.  *
  5.  * This is a component of the ProDoor System.
  6.  * Do not distribute modified versions without my permission.
  7.  * Do not remove or alter this notice or any other copyright notice.
  8.  * If you use this in your own program you must distribute source code.
  9.  * Do not use any of this in a commercial product.
  10.  *
  11.  *)
  12.  
  13. (*
  14.  * quelib.inc - Circular Queue library (3-1-89)
  15.  *
  16.  *)
  17.  
  18.  
  19. (*
  20.  * INIT_QUE(queue)
  21.  *
  22.  *)
  23.  
  24. procedure init_que( var q: queue_rec);
  25. begin
  26.    q.next_in := 1;
  27.    q.next_out := 1;
  28.    q.count := 0;
  29. end;
  30.  
  31.  
  32. (*
  33.  * EMPTY_QUE(queue): boolean
  34.  *
  35.  *)
  36.  
  37. function empty_que( var q: queue_rec ): boolean;
  38. begin
  39.    empty_que := q.count = 0;
  40. end;
  41.  
  42.  
  43. (*
  44.  * QUE_FREE(queue): integer
  45.  *
  46.  *)
  47.  
  48. function que_free (var q: queue_rec): integer;
  49. begin
  50.    que_free := queue_size - q.count;
  51. end;
  52.  
  53.  
  54. (*
  55.  * ENQUE(queue, char)
  56.  *
  57.  *)
  58.  
  59. procedure enque (var q: queue_rec; c: char);
  60. begin
  61.    inc(q.count);
  62.    q.data[q.next_in] := c;
  63.    if q.next_in < queue_size then
  64.       inc(q.next_in)
  65.    else
  66.       q.next_in := 1;
  67. end;
  68.  
  69.  
  70. (*
  71.  * DEQUE(queue,dest)
  72.  *    (EMPTY_QUE check is required before calling DEQUE)
  73.  *
  74.  *)
  75.  
  76. procedure deque (var q: queue_rec; var c: char);
  77. begin
  78.    c := q.data[q.next_out];
  79.    if q.next_out < queue_size then
  80.       inc(q.next_out)
  81.    else
  82.       q.next_out := 1;
  83.    dec(q.count);
  84. end;
  85.  
  86.